<?php

/**
 * Ctdocumentocaracteristica form.
 *
 * @package    ingenyo-biblio
 * @subpackage form
 * @author     Your name here
 */
sfContext::getInstance()->getConfiguration()->loadHelpers(array('Url'));

class CtdocumentocaracteristicaForm extends BaseCtdocumentocaracteristicaForm
{

  public function configure()
  {
    unset($this['ValorTipificacion'], $this['usuario'], $this['fechaCambio']);
    unset($this['idDocumento']);

    $this->setWidget('idIteracion', new sfWidgetFormInputHidden());

    $sf_formatter_revisited = new documentoCaracteristicaFormatter($this->getWidgetSchema());
    $this->getWidgetSchema()->addFormFormatter("documentoCaracteristica", $sf_formatter_revisited);
    $this->getWidgetSchema()->setFormFormatterName("documentoCaracteristica");


    $caracteristica = $this->getObject()->getCtCaracteristica();

    $this->setWidget('valorCaracteristica', $this->getWidgetParaElTipo($caracteristica->getCtTipoDato()));

    $this->setValidator('valorCaracteristica', $this->getValidatorParaElTipo($caracteristica->getCtTipoDato()));

    $this->setWidget('idCaracteristica', new sfWidgetFormInputHidden());



    $this->getWidget('idCaracteristica')->setDefault($caracteristica->getId());

    $this->getValidator('valorCaracteristica')->setOption('required', $caracteristica->getRequeridacaracteristica());
    $this->setWidget('valorCaracteristica', $this->getWidgetParaElTipo($caracteristica->getCtTipoDato()));
    $this->getWidget('valorCaracteristica')->setAttribute('repetible', $caracteristica->getRepetiblecaracteristica());
    $this->getWidget('valorCaracteristica')->setLabel($caracteristica->getDescripcioncaracteristica());
    $this->getWidget('valorCaracteristica')->setDefault($this->getObject()->getValorcaracteristica());

    ##Esto no lo hace el ALLOW_EXTRAS ni el CSRF....
    //  $this->widgetSchema->setNameFormat('documento_caracteristica[%s]');
    $this->validatorSchema->setOption('allow_extra_fields', true);
    $this->disableLocalCSRFProtection();

  }

  public function getWidgetParaElTipo($tipo_dato)
  {

    switch ($tipo_dato->getNombretipodato())
    {
      case 'archivo':
        if ($this->getObject()->getValorcaracteristica())
        {
          
          $template = '<div> %file% %input%  </div>'; #%delete_label% %delete%
        }
        else
        {
          $template = '<div>%input%</div>';
        }
        return new sfWidgetFormInputFileEditable(array(
            'label' => 'Adjunto',
            'with_delete' => true,
            'delete_label'=> 'Eliminar el archivo',
            'file_src' => $this->getObject()->getValorcaracteristica(),
            'edit_mode' => !$this->isNew(),
            'template' => $template,
          ));

        break;

      default:
        return new sfWidgetFormInputText();
        break;
    }

  }

  public function getValidatorParaElTipo($tipo_dato)
  {

    switch ($tipo_dato->getNombretipodato())
    {
      case 'archivo':
        return new sfValidatorFile(array('path' => 'uploads/adjuntos/'));
        break;

      default:
        return new sfValidatorString();
        break;
    }

  }

}
